import api from '@/common/vmeitime-http/'
import
TUIChatEngine, {
	TUIGlobal,
	IConversationModel,
	TUIStore,
	StoreName,
	TUITranslateService,
	TUIConversationService,
} from "@tencentcloud/chat-uikit-engine";
import {
	vueVersion
} from "../TUIKit/adapter-vue";
import {
	TUILogin
} from "@tencentcloud/tui-core";

function deitMonth(arr) {
	var i = Math.floor((Math.random() * arr.length));
	return i;
}

// 用户登录IM  如有登陆过先 退出 后再登录
export async function imTUILoginFun(db = null) {
	console.log('---------------------imTUILoginFun---------------');
	const UserInfo = await api.get('UserInfo', {});
	console.log(UserInfo, '------------------UserInfo');
	try {
		uni.setStorageSync('sc-userInfo', UserInfo.data.info);
	} catch (e) {
		// error
	}
	const appinfo = await api.get('PlatformOtherListArray', {});
	const username = 'user_' + UserInfo.data.info.id;
	const {
		data
	} = await api.post('InstantMessageInfo', {
		username: username
	});
	uni.$chat_SDKAppID = appinfo.data.info.imAppId.value;
	uni.$chat_userID = username;
	uni.$chat_userSig = data.info;

	try {
		// 先退出再登录
		let promise = getApp().globalData.TUIChatEngine.chat.logout();
		promise.then(function(imResponse) {
			console.log(imResponse.data); // 登出成功
			console.log('------------------登出成功');
			// TUICore login
			let promise = TUILogin.login({
				SDKAppID: appinfo.data.info.imAppId.value,
				userID: uni.$chat_userID,
				// UserSig 是用户登录即时通信 IM 的密码，其本质是对 UserID 等信息加密后得到的密文。
				// 该方法仅适合本地跑通 Demo 和功能调试，详情请参见 https://cloud.tencent.com/document/product/269/32688     
				userSig: data.info,
				// 如果您需要发送图片、语音、视频、文件等富媒体消息，请设置为 true
				useUploadPlugin: true,
				// 本地审核可识别、处理不安全、不适宜的内容，为您的产品体验和业务安全保驾护航
				// 此功能为增值服务，请参考：https://cloud.tencent.com/document/product/269/79139
				// 如果您已购买内容审核服务，开启此功能请设置为 true
				useProfanityFilterPlugin: false,
				framework: `vue${vueVersion}` // 当前开发使用框架 vue2 / vue3
			})
			promise.then(function(imResponse) {
				console.log(imResponse.data); // 登录成功
				console.log('-------------------------------------------21312312132312');
				// that.updateMyProfile(UserInfo.data.info);
				if (imResponse.data.repeatLogin === true) {
					// 标识账号已登录，本次登录操作为重复登录。
					console.log(imResponse.data.errorInfo);

				}
				if (db) {
					db(imResponse.data)
				}
			}).catch(function(imError) {
				console.warn('login error:', imError); // 登录失败的相关信息
			});
		}).catch(function(imError) {
			console.warn('logout error:', imError);
			let promise = TUILogin.login({
				SDKAppID: appinfo.data.info.imAppId.value,
				userID: uni.$chat_userID,
				// UserSig 是用户登录即时通信 IM 的密码，其本质是对 UserID 等信息加密后得到的密文。
				// 该方法仅适合本地跑通 Demo 和功能调试，详情请参见 https://cloud.tencent.com/document/product/269/32688     
				userSig: data.info,
				// 如果您需要发送图片、语音、视频、文件等富媒体消息，请设置为 true
				useUploadPlugin: true,
				// 本地审核可识别、处理不安全、不适宜的内容，为您的产品体验和业务安全保驾护航
				// 此功能为增值服务，请参考：https://cloud.tencent.com/document/product/269/79139
				// 如果您已购买内容审核服务，开启此功能请设置为 true
				useProfanityFilterPlugin: false,
				framework: `vue${vueVersion}` // 当前开发使用框架 vue2 / vue3
			})
			promise.then(function(imResponse) {
				console.log('-------------------------------------------1111-----------------');
				console.log(imResponse);
				// that.updateMyProfile(UserInfo.data.info);
				if (imResponse.data.repeatLogin === true) {
					// 标识账号已登录，本次登录操作为重复登录。
					console.log(imResponse.data.errorInfo);

				}
				if (db) {
					db(imResponse.data)
				}
			}).catch(function(imError) {
				console.warn('login error:', imError); // 登录失败的相关信息
			});
		});

	} catch (e) {
		//TODO handle the exception
		let promise = TUILogin.login({
			SDKAppID: appinfo.data.info.imAppId.value,
			userID: uni.$chat_userID,
			// UserSig 是用户登录即时通信 IM 的密码，其本质是对 UserID 等信息加密后得到的密文。
			// 该方法仅适合本地跑通 Demo 和功能调试，详情请参见 https://cloud.tencent.com/document/product/269/32688     
			userSig: data.info,
			// 如果您需要发送图片、语音、视频、文件等富媒体消息，请设置为 true
			useUploadPlugin: true,
			// 本地审核可识别、处理不安全、不适宜的内容，为您的产品体验和业务安全保驾护航
			// 此功能为增值服务，请参考：https://cloud.tencent.com/document/product/269/79139
			// 如果您已购买内容审核服务，开启此功能请设置为 true
			useProfanityFilterPlugin: false,
			framework: `vue${vueVersion}` // 当前开发使用框架 vue2 / vue3
		})
		promise.then(function(imResponse) {
			console.log('-------------------------------------------1111-----------------');
			console.log(imResponse);
			// that.updateMyProfile(UserInfo.data.info);
			if (imResponse.data.repeatLogin === true) {
				// 标识账号已登录，本次登录操作为重复登录。
				console.log(imResponse.data.errorInfo);

			}
			if (db) {
				db(imResponse.data)
			}
		}).catch(function(imError) {
			console.warn('login error:', imError); // 登录失败的相关信息
		});
	}
}

// 添加客服为好友
export async function addFriend(that = this) {
	const {
		data
	} = await api.get('AdminUserList', {
		page: 1,
		limit: 200
	});
	let list = data.list.map(res => res.id)
	let num = deitMonth(list);
	console.log(list[num]);
	// const that = this;
	const toId = `admin-im-${list[num]}`;
	// 添加好友
	let promise = getApp().globalData.TUIChatEngine.chat.addFriend({
		to: toId,
		source: 'AddSource_Type_Web',
		remark: '小橙子',
		groupName: '好友',
		wording: '我是 user_',
	});
	promise.then(function(imResponse) {
		console.log(imResponse);
		// 添加好友的请求发送成功
		const {
			code
		} = imResponse.data;
		if (code === 30539) {
			// 30539 说明 user1 设置了【需要经过自己确认对方才能添加自己为好友】，此时 SDK 会触发 TencentCloudChat.EVENT.FRIEND_APPLICATION_LIST_UPDATED 事件
		} else if (code === 0) {
			// 0 说明 user1 设置了【允许任何人添加自己为好友】，此时 SDK 会触发 TencentCloudChat.EVENT.FRIEND_LIST_UPDATED 事件
		}

		TUIConversationService.switchConversation('C2C' + toId);
		getApp().globalData.TUIChatEngine.TUIGlobal?.global?.navigateTo({
			url: "/TUIKit/components/TUIChat/index",
		});

		that.$emit("handleSwitchConversation", 'C2C' + toId);
	}).catch(function(imError) {
		console.warn('addFriend error:', imError); // 添加好友失败的相关信息
		TUIConversationService.switchConversation('C2C' + toId);
		getApp().globalData.TUIChatEngine.TUIGlobal?.global?.navigateTo({
			url: "/TUIKit/components/TUIChat/index",
		});
		that.$emit("handleSwitchConversation", 'C2C' + toId);
	});
}